#!/bin/sh /etc/rc.common

START=30
STOP=90

config_cb() {
    chilli_inst=$2
    if [ "$chilli_inst" != "" ]
    then
       rm -f /var/run/chilli_${chilli_inst}.*
       chilli_conf=/var/run/chilli_${chilli_inst}.conf
       eval "start_chilli_$chilli_inst=1"
    fi
}

option_cb() {
    case "$1" in
        # UCI settings
       network)
           . /lib/functions/network.sh
           local ifname
           network_get_device ifname $2
           echo "dhcpif=\"$ifname\"" >> $chilli_conf
           ;;
       disabled)
           eval "start_chilli_$chilli_inst=0"
           ;;
        # boolean settings
       dhcpbroadcast|nodynip|vlanlocation|locationstopstart|locationcopycalled|locationimmediateupdate|locationopt82|coanoipcheck|noradallow|proxymacaccept|proxyonacct|dhcpmacset|dhcpradius|noc2c|eapolenable|uamanydns|uamanyip|uamnatanyip|nouamsuccess|nowispr1|nowispr2|domaindnslocal|radsec|macauth|macreauth|macauthdeny|macallowlocal|strictmacauth|strictdhcp|ieee8021q|only8021q|radiusoriginalurl|swapoctets|statusfilesave|wpaguests|openidauth|papalwaysok|mschapv2|chillixml|acctupdate|dnsparanoia|seskeepalive|usetap|noarpentries|framedservice|scalewin|redir|injectwispr|redirurl|routeonetone|nousergardendata|uamgardendata|uamotherdata|withunixipc|uamallowpost|redirssl|uamuissl|layer3|patricia|redirdnsreq|dhcpnotidle|ipv6|ipv6only)
           [ "$2" = "true" -o "$2" = "1" ] && echo "$1" >> $chilli_conf
           ;;
       *)
           echo "$1=\"$2\"" >> $chilli_conf
           ;;
    esac
}

start_chilli() {
    local cfg="$1"
    local start_chilli=$(eval "echo \$start_chilli_$cfg")
    [ "$start_chilli" = "0" ] && return
    local base=/var/run/chilli_${cfg}
    chilli -c ${base}.conf \
       --pidfile ${base}.pid \
       --cmdsocket ${base}.sock \
       --unixipc ${base}.ipc &
}

start() {
    config_load chilli
    config_foreach start_chilli chilli
}

stop() {
    ls /var/run/chilli*.pid 2>/dev/null && {
       kill $(cat /var/run/chilli*.pid)
       sleep 1
       killall -9 chilli
       rm -f /var/run/chilli*
    }
}
